#!/usr/bin/env node

const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');

// 配置信息
const CONFIG = {
  repoUrl: 'https://gitcode.com/weixin_39362174/sjfls.git',
  branchName: 'main',
  commitMessage: 'Initial commit: add README.md'
};

// 颜色输出
const colors = {
  green: '\x1b[32m',
  yellow: '\x1b[33m',
  red: '\x1b[31m',
  reset: '\x1b[0m'
};

function log(message, color = 'reset') {
  console.log(`${colors[color]}${message}${colors.reset}`);
}

function runCommand(command, description) {
  try {
    log(`正在执行: ${description}`, 'yellow');
    const result = execSync(command, { 
      encoding: 'utf8',
      stdio: 'inherit'
    });
    log(`✅ ${description} 完成`, 'green');
    return result;
  } catch (error) {
    log(`❌ ${description} 失败: ${error.message}`, 'red');
    process.exit(1);
  }
}

function createReadme() {
  const readmeContent = `# sjfls

> 快速初始化脚手架项目

## 项目简介
这是一个自动化的Git仓库初始化工具，能够一键完成仓库克隆、README创建、初始提交、分支重命名和推送等操作。

## 快速开始

\`\`\`bash
# 克隆项目
git clone https://gitcode.com/weixin_39362174/sjfls.git
cd sjfls

# 运行初始化
npm run init
\`\`\`

## 功能特性
- ✅ 自动克隆远端仓库
- ✅ 创建标准化README.md
- ✅ 执行初始提交
- ✅ 自动重命名分支为main
- ✅ 推送到远端仓库

## 技术栈
- Node.js 20 LTS
- Git
- Shell脚本

## 许可证
MIT License
`;

  fs.writeFileSync('README.md', readmeContent);
  log('✅ README.md 已创建', 'green');
}

function main() {
  log('🚀 开始初始化 sjfls 项目...', 'green');
  
  // 检查是否已存在git仓库
  if (fs.existsSync('.git')) {
    log('⚠️  当前目录已存在git仓库，跳过克隆步骤', 'yellow');
  } else {
    // 克隆仓库
    runCommand(`git clone ${CONFIG.repoUrl} .`, '克隆远端仓库');
  }

  // 创建README.md
  createReadme();

  // 添加文件到git
  runCommand('git add README.md', '添加README.md到git');

  // 提交更改
  runCommand(`git commit -m "${CONFIG.commitMessage}"`, '执行初始提交');

  // 重命名分支
  try {
    runCommand(`git branch -M ${CONFIG.branchName}`, '重命名分支为main');
  } catch (error) {
    log('⚠️  分支重命名可能已执行，继续下一步', 'yellow');
  }

  // 推送到远端
  runCommand(`git push -u origin ${CONFIG.branchName}`, '推送到远端仓库');

  log('\n🎉 项目初始化完成！', 'green');
  log('现在你可以开始开发你的项目了。', 'green');
}

// 检查Node版本
const nodeVersion = process.version;
if (!nodeVersion.startsWith('v20')) {
  log('⚠️  建议使用Node.js 20 LTS以获得最佳兼容性', 'yellow');
}

// 执行主函数
main();
